package main

import (
	"bufio"
	"log"
	"net"
	"os"
	"strings"
)

func main() {
	tcpClient(":10086")

}
func tcpClient(port string) {
	con, e := net.Dial("tcp", port)
	defer con.Close()
	if e != nil {
		log.Printf("%v", e)
		return
	}
	for {
		//读取控制台的 已经输入的数据
		sendData := make([]byte, 1<<10*10)
		reader := bufio.NewReader(os.Stdin)
		n, err := reader.Read(sendData)
		if err != nil {
			log.Printf("%v", err)
		}
		//对于控制台的 输入的数据 次数-2 是由于 window 输入的的时候 加上 回车换行 \r\n
		sendDataStr := sendData[:n-2]
		log.Printf("send data=%v", string(sendDataStr))
		//将控制台输入的数据发送出去(此处 必须使用con 发送的不能适应bufio )
		m, errWriter := con.Write(sendDataStr)
		if errWriter != nil {
			log.Printf("%v", errWriter)
		}
		if m > 0 {
			log.Println("send ok")
		}
		// 收数据的模块
		reData := make([]byte, 1024*10)
		j, err := con.Read(reData)
		if err != nil {
			log.Println(err)
		}
		if strings.ToUpper(string(reData[:j])) == "BYE" {
			log.Println("client goodBye")
			break
		}
		log.Printf("resp=%s", string(reData[:j]))
	}
}
